package com.thiswhyme.republish.rabbitmq.core;

import org.springframework.messaging.Message;

/**
 * @description: 消息发送确认处理器
 * @author: thiswhyme
 * @date: 2021/3/25
 */
public interface IPublishAckHandler {

    /**
     * 默认发送端ack处理
     * 消息投递到exchange会触发该方法，配合“@ServiceActivator”注解使用
     * 通道名为"spring.cloud.stream.rabbit.bindings.[channel名].producer.confirm-ack-channel"对应值
     * @param message 消息
     */
    void handleConfirm(Message<?> message);

    /**
     * 消息未路由到queue处理
     * 消息未路由到queue会触发该方法，配合“@ServiceActivator”注解使用
     * 通道名为"spring.cloud.stream.bindings.[channel名].destination"对应值 + ".errors"
     * @param message
     */
    void routeFail(Message<?> message);
}
